package com.gpstracking.Servlets;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import com.gpstracking.BE.Dispositivo;
import com.gpstracking.BE.DispositivoPosicion;
import com.gpstracking.BE.Usuario;
import com.gpstracking.BL.DispositivoBL;

import net.sf.json.JSONArray;
import net.sf.json.JSONObject;


public class ServletPositions extends HttpServlet {

	/**
	 * Constructor of the object.
	 */
	public ServletPositions() {
		super();
	}

	/**
	 * Destruction of the servlet. <br>
	 */
	public void destroy() {
		super.destroy(); // Just puts "destroy" string in log
		// Put your code here
	}

	/**
	 * The doGet method of the servlet. <br>
	 *
	 * This method is called when a form has its tag value method equals to get.
	 * 
	 * @param request the request send by the client to the server
	 * @param response the response send by the server to the client
	 * @throws ServletException if an error occurred
	 * @throws IOException if an error occurred
	 */
	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		response.setContentType("text/html");
		PrintWriter out = response.getWriter();
/*		out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
		out.println("<HTML>");
		out.println("  <HEAD><TITLE>A Servlet</TITLE></HEAD>");
		out.println("  <BODY>");
		out.print("    This is ");
		out.print(this.getClass());
		out.println(", using the GET method");
		out.println("  </BODY>");
		out.println("</HTML>");
		out.flush();
		out.close();*/
		/*
		 * La idea es hacer un json object para cada dispositivo con sus posiciones como uno de sus atributos
		 * estos json objects deben estar en un jsonarray
		 * */
		String dias=request.getParameter("dias");//cuantos dias se quieren mostrar en el mapa
		System.out.println( dias );
		String json=request.getParameter("json");//estos son la lista de dispositivos que desactivo		
		//falta filtrar dispositivos
		

		HttpSession sesion = request.getSession(true);
		
		Usuario user = (Usuario) sesion.getAttribute("user");
		
		
		DispositivoBL deviceBL = new DispositivoBL();
		List<Dispositivo> listaDispositivos = deviceBL.activos(user);
		JSONArray arrayObj = new JSONArray();
		if (listaDispositivos.size()>0){
		
			for (Dispositivo d : listaDispositivos){
			if (/*isNotSelected(d.getIdDispositivo(),json)&&*/(d.getDispositivoPosicions().size()>0)){
				//si el dispositivo no es seleccionado fuera de la lista que no se quieren ver.. extraigo su posicion
				//inicialmente json deberia estar vacio por lo que todos son seleccionados
				JSONObject devicePositions = new JSONObject();
				devicePositions.put("DispositivoId",d.getIdDispositivo());
				devicePositions.put("Nombre",d.getNombre());
				devicePositions.put("Descripcion",d.getDescripcion());
				devicePositions.put("MacAddress",d.getMacAddress());
				devicePositions.put("Numero",d.getNumero());
				devicePositions.put("Color","#FF0000");
				//aqui deberia haber codigo que genere el mismo color (que coincida con generado en el jsp)  
				devicePositions.put("DeviceId","");
				JSONArray posiciones = new JSONArray();
				for (DispositivoPosicion dp : (List<DispositivoPosicion>)d.getDispositivoPosicions()){
					//xq lo de arriba me sale list de dispositivos =S.. ayudame con esto rata xD
					JSONObject posicion = new JSONObject();
					posicion.put("Latitud", dp.getLatitud());
					posicion.put("Longitud", dp.getLongitud());
					posicion.put("DateTime", dp.getFechaHora());//hay que darle el formato..
					posiciones.add(posicion);
				}
				devicePositions.put("Posiciones", posiciones);
				arrayObj.add(devicePositions);
			}			
			}
		}

		out.println(arrayObj);
		out.flush();
		out.close();		
		/*
		 * Por si quiero escribir uno x uno:
		for(int i=0;i<arrayObj.size();i++){
			out.println(arrayObj.getString(i));
		}
		*/

	}

	private boolean isNotSelected(int idDispositivo, String json) {
		// TODO Auto-generated method stub
		return true;
	}

	/**
	 * Initialization of the servlet. <br>
	 *
	 * @throws ServletException if an error occurs
	 */
	public void init() throws ServletException {
		// Put your code here
	}

}
